flowchart BT
  RequiredToBeUniform ==> workgroupBarriercall;
  CFreturn -.-> CFstart;
  inputsidentexpr ==> MayBeNonUniform;
  binaryexprresult ==> inputsidentexpr;
  binaryexprresult -.-> CFstart;
  ifstmt ==> binaryexprresult;
  workgroupBarriercall ==> ifstmt;
  CFafterworkgroupBarrier -.-> workgroupBarriercall;

  style MayBeNonUniform fill:#941b1b
  style RequiredToBeUniform fill:#1818ab
  linkStyle 0,2,3,5,6 stroke:#941b1b

  CFstart([CF_start]);
  CFreturn([CF_return]);
  inputsidentexpr[formal_param_expr: inputs];
  binaryexprresult[binary_expr: inputs.wgid.x == 1];
  ifstmt([if_stmt: inputs.wgid.x == 1]);
  workgroupBarriercall([call: workgroupBarrier]);
  CFafterworkgroupBarrier([CF_after_workgroupBarrier]);
